axial_force_element Derived Type

type, public :: axial_force_element

Defines an extensible force element between two attachment points. The element force acts along the line from point 1 to point 2. Body index zero denotes a fixed ground point whose coordinates are expressed in world coordinates. Subtypes override evaluate_force to compute a force from the current length and length rate.


Contents


Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: body_1 = 0

The one-based body index for the first attachment point, or zero for a ground point.

integer(kind=int32), public :: body_2 = 0

The one-based body index for the second attachment point, or zero for a ground point.

real(kind=real64), public, dimension(3) :: point_1 = 0.0d0

The first attachment point in body_1 coordinates, or in world coordinates when body_1 is zero.

real(kind=real64), public, dimension(3) :: point_2 = 0.0d0

The second attachment point in body_2 coordinates, or in world coordinates when body_2 is zero.


Type-Bound Procedures

procedure, public :: evaluate_force => axial_zero_force

Returns the signed axial force for a given element length and length rate. The base implementation returns zero.

  • private pure function axial_zero_force(this, length, length_rate) result(rst)

    Evaluates the default axial force law, which produces no force.

    Arguments

    Type IntentOptional Attributes Name
    class(axial_force_element), intent(in) :: this

    The axial element being evaluated.

    real(kind=real64), intent(in) :: length

    The current element length and its time derivative. They are unused by the zero-force law.

    real(kind=real64), intent(in) :: length_rate

    The current element length and its time derivative. They are unused by the zero-force law.

    Return Value real(kind=real64)

    The signed axial force, equal to zero.